var add,
    edit,
    setVal,//给表单设值
    reset;//清空表单中的值
require(['select2'], function () {
    $('form').initForm();
    var $mntMile = $('#mntMile'),//维保里程KM(单选)
        $mntOtherMile = $('#mntOtherMile'),
        $partsCode = $('#partsCode'),//建议更换零部件（多选）
        $carType = $('#carType');//车辆类型

    //绑定零部件
    var dict = window.parent.GLOBAL_PARAMS.DICT_CACHE.PART0000;
    if ($.isArray(dict)) {
        $.each(dict, function (i, item) {
            var $a = $('<a>' + item.value + '</a>').data('data-val', item.key);
            $partsCode.append($a);
        })
    }


    //维修里程点击事件
    $mntMile.on('click', 'a', function () {
        if (!$(this).hasClass('active')) {
            $(this).addActiveClass();
        }
        $mntOtherMile.val('');
    });


    //零部件点击事件
    $partsCode.on('click', 'a', function () {
        $(this).toggleClass('active');
    });

    //当其它维修里程填写正确时应该把选中的维修里程清除，否则就把不正确的输入清空
    $mntOtherMile.on('blur', function () {
        var val = $.trim($(this).val());
        if (val && /^\d+$/.test(val)) {
            $('a.active', $mntMile).removeClass('active');
        } else {
            $(this).val('');
        }
    });

    //获取表单输入的值
    function getValues() {
        var obj = {};
        obj.carType = $carType.val();
        if (!obj.carType) {
            $.messager.alert("提示", "车辆类型不能为空!");
            return;
        }
        obj.mntMile = $('a.active', $mntMile).length ? $('a.active:eq(0)', $mntMile).attr('data-val') : $.trim($mntOtherMile.val());
        if (!obj.mntMile) {
            $.messager.alert("提示", "请选择一个维修里程或者填写自定义维修里程!");
            return;
        }

        var partsCode = [];
        $.each($('a.active', $partsCode), function (index, item) {
            partsCode.push($(item).data('data-val'));
        });
        if (!partsCode.length) {
            $.messager.alert("提示", "请至少选择一个建议更换的零部件!");
            return;
        }
        obj.partsCode = partsCode.join(',');
        return obj;
    }

    add = function (fn) {
        //var data = $formData.getValues();
        //data.mntMile = 50000;
        //data.partsCode=new Array("PART0001","PART0002","PART0003");
        //data.partsCode = 'PART0001';
        //var result = $.validator($formData);

        var data = getValues();
        if (data) {
            $.ajaxExt({
                url: "/funMaintenaSet/savePartsReplaceSetInfo.htm",
                data: data
            }).done(function () {
                fn && fn();
            });
        }
    };

    setVal = function (carType, mntMile) {
        $.ajaxExt({
            url: "/funMaintenaSet/getPartsReplaceSetInfo.htm",
            data: {'mntMile': mntMile, 'carType': carType}
        }).done(function (data) {
            if (data) {
                $carType.select2('val', data.carType);
                if (data.mntMile) {
                    $.each($('a', $mntMile), function (i, item) {
                        if (data.mntMile == $(item).attr('data-val')) {
                            $(item).addClass('active');
                            return false;
                        }
                    });
                    if (!$('a.active', $mntMile).length) {
                        $mntOtherMile.val(data.mntMile);
                    }
                }
                if (data.partsCode) {
                	data.partsCode =data.partsCode.split(',');
                    $.each($('a', $partsCode), function (i, item) {
                        if (data.partsCode.indexOf($(item).text()) > -1) {
                            $(item).addClass('active');
                        }
                    });
                }
            }
        });
    };

    reset = function () {
//        $carType.val('');
        $('a.active', $mntMile).removeClass('active');
        $(':text', $mntMile).val('');
        $('a.active', $partsCode).removeClass('active');
    };
});